The present invention relates generally to programming techniques and systems and, more particularly, to programming techniques and systems which tune coherence protocols to improve application performance.
The power of computers to process data continues to grow at a rapid pace. As computing power increases, software applications which are developed for new computing platforms become more sophisticated and more complex. It is not uncommon for teams of software developers to develop applications having hundreds of thousands, or even millions, of lines of software code. With the additional complexity comes additional challenges in terms of, for example, performance evaluation and improvement, e.g., to identify portions of the software code which can be improved so that the program as a whole runs faster.
It can be difficult to identify which aspects of complex systems and software code to focus on during optimizations. When tuning a shared-memory application, for example, the coherence protocol is often overlooked. Shared-memory applications being executed on parallel processors will typically employ cache memory to bring data closer to the processor which is operating on that data. However, using local caches requires that a mechanism be employed so that the various processors and memory controllers operating in the system have a coherent global view of the data, which mechanisms are referred to as “coherence protocols”. For example, coherence protocols generally define how (and which) memory devices will be updated when a write operation is performed. A variety of different coherence protocols are in use today.
However, coherence protocols tend to be fixed within each system, even though there is likely no single protocol that is optimal for all applications. Moreover, even if a mechanism is provided in a particular system to permit code optimization based on that system's coherence protocol, there is no automated way to use such a mechanism. Thus, applications are frequently executed on processing systems without optimization for the processing system's coherence protocol.
Accordingly, it would be desirable to provide systems and methods tuning coherence protocols.